package Negocio;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import DTO.DTO_Carta;
import DTO.DTO_ItemCarta;
import Entities.Entity_Carta;
import Entities.Entity_ItemCarta;

public class Carta {
	
	private List<ItemCarta> itemCartas;
	private int idCarta;
	private Date vigencia;
	
	//Constructores
	public Carta(List<ItemCarta> itemCartas, int idCarta, Date vigencia) {
		super();
		this.itemCartas = itemCartas;
		this.idCarta = idCarta;
		this.vigencia = vigencia;
	}
	
	public Carta(DTO_Carta carta){
		this.itemCartas = new ArrayList<ItemCarta>();
		for(DTO_ItemCarta i : carta.getItemCartas()){
			this.itemCartas.add(new ItemCarta(i));
		}
		this.idCarta = carta.getIdCarta();
		this.vigencia = carta.getVigencia();
	}
	
	public Carta(Entity_Carta carta){
		this.itemCartas = new ArrayList<ItemCarta>();
		for(Entity_ItemCarta i : carta.getItemCartas()){
			this.itemCartas.add(new ItemCarta(i));
		}
		this.idCarta = carta.getIdCarta();
		this.vigencia = carta.getVigencia();
	}
	
	public Carta() {
	}
	
	//GET & SET
	public List<ItemCarta> getItemCartas() {
		return itemCartas;
	}
	
	public void setItemCartas(List<ItemCarta> itemCartas) {
		this.itemCartas = itemCartas;
	}
	
	public int getIdCarta() {
		return idCarta;
	}
	
	public Date getVigencia() {
		return vigencia;
	}
	public void setVigencia(Date vigencia) {
		this.vigencia = vigencia;
	}
	
	//METODOS DE NEGOCIO
	
	public DTO_Carta toDTO(){
		DTO_Carta c = new DTO_Carta();
		c.setIdCarta(idCarta);
		c.setVigencia(vigencia);
		List<DTO_ItemCarta> aux_ic = new ArrayList<DTO_ItemCarta>();
		for(ItemCarta e: itemCartas)
			aux_ic.add(e.toDTO());
		c.setItemCartas(aux_ic);
		return c;
	}
	
	public Entity_Carta toEntity(){
		Entity_Carta c = new Entity_Carta();
		c.setIdCarta(idCarta);
		c.setVigencia(vigencia);
		List<Entity_ItemCarta> aux_ic = new ArrayList<Entity_ItemCarta>();
		for(ItemCarta e: itemCartas)
			aux_ic.add(e.toEntity());
		c.setItemCartas(aux_ic);
		return c;
	}
}
